package com.atguigu.spzx.cloud.order.feign;

import com.atguigu.spzx.cloud.order.entity.Order;
import com.atguigu.spzx.cloud.user.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/*
*  description: 存在的意义就是远程调用的!
*  声明式远程调用: 让你像以前一样,通过调用方法实现远程调用  -> openFeign帮我们转成http请求
*
* */

//FeignClient(value="服务的名 默认开启负载均衡")
//fallback = UserFeignClientFallBack.class
//指定调用的服务在nacos中的名字
@FeignClient(value = "spzx-cloud-user", fallbackFactory = UserServiceFallbackFactory.class)
// @FeignClient(value = "spzx-cloud-user", fallback = UserServiceFallback.class) // value可以省略
public interface UserFeignClient {
    //通过OpenFeign
// 本质上还是 -> http://spzx-cloud-user/api/user/findUserByUserId/1
// OpenFeign不用加@LoadBalanced注解 人家自带负载均衡算法，默认还是轮询
    //维护定义要访问的接口信息
    // 这个接口信息包含 请求路径、请求方式、请求参数、返回结果
    // TODO: 就是对方的controller层语法
    //  调用的方式的路径
    //  声明调用的方法 此方法和调用者的controllerHandler方法一样
    //  @GetMapping 对方的请求方式
    //  url 对方完整地址设置
    //  返回值 对方方法的返回值
    //  参数 对方接收的参数
    @GetMapping(value = "/api/user/findUserByUserId/{userId}")
    public User findUserByUserId(@PathVariable(value = "userId") Long userId);









}
